e063dd9e4ddb3465d751fa5ba157cb6b794450b4,launchpad/base/src/main/java/org/apache/sling/launchpad/app/ControlListener.java,ControlListener,run,#,149
Before Change
if (COMMAND_STOP.equals(command)) {
slingMain.doStop();
Main.info(s.getRemoteSocketAddress() + "<" + RESPONSE_OK, null);
writeLine(s, RESPONSE_OK);
break;
} else if (COMMAND_STATUS.equals(command)) {
After Change
try {
while (true) {
final Socket s;
try {
s = server.accept();
} catch (IOException ioe) {
// accept terminated, most probably due to Socket.close()
// just end the loop and exit
break;
}
// delay processing after unsuccessfull attempts
if (delay > 0) {
Main.info(s.getRemoteSocketAddress() + ": Delay: " + (delay / 1000), null);
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
}
try {
final String commandLine = readLine(s);
if (commandLine == null) {
final String msg = "ERR: missing command";
writeLine(s, msg);
continue;
}
final int blank = commandLine.indexOf(' ');
if (blank < 0) {
final String msg = "ERR: missing key";
writeLine(s, msg);
continue;
}
if (!secretKey.equals(commandLine.substring(0, blank))) {
final String msg = "ERR: wrong key";
writeLine(s, msg);
delay = (delay > 0) ? delay * 2 : 1000L;
continue;
}
final String command = commandLine.substring(blank + 1);
Main.info(s.getRemoteSocketAddress() + ">" + command, null);
if (COMMAND_STOP.equals(command)) {
if (this.shutdownThread != null) {
writeLine(s, RESPONSE_STOPPING);
} else {
this.shutdownThread = new Thread("Apache Sling Control Listener: Shutdown") {
public void run() {
slingMain.doStop();
try {
server.close();
} catch (final IOException ignore) {
}
}
};
this.shutdownThread.start();
writeLine(s, RESPONSE_OK);
}
} else if (COMMAND_STATUS.equals(command)) {
writeLine(s, (this.shutdownThread == null) ? RESPONSE_OK : RESPONSE_STOPPING);
} else if (COMMAND_THREADS.equals(command)) {
dumpThreads(s);